https://www.youtube.com/watch?v=ddSo8Nb0mTw&list=PLzMcBGfZo4-lUA8uGjeXhBUUzPYc6vZRn&index=5
https://www.youtube.com/watch?v=cMJwqxskyek
https://www.youtube.com/watch?v=phCfJiM--f8
https://www.youtube.com/watch?v=0DwzsI6q31w
https://docs.opencv.org/3.4/dd/d49/tutorial_py_contour_features.html
https://rdrr.io/github/mccarthy-m-g/embedr/man/embed_video.html
import cv2
import numpy as np
cap = cv2.VideoCapture('0115_LH39_d1_t4.mp4') # laad de video in
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'MJPG'), 30.0, (int(cap.get(3)), int(cap.get(4))))
while True:
# leest de afbeelding van de video
ret, frame = cap.read()
# teken een cirkel zodat de achtergrond niet wordt meegenomen in de mask
img = cv2.circle(frame, (640,480), 660, (255,255,255), 400)
# zet afbeelding om van bgr naar hsv zodat opencv er mee kan werken
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# bepaal de uiterste kleuren voor de mask
dark_black = np.array([0, 0, 0])
light_black = np.array([0, 0, 60])
# de mask bepaalt welke kleuren in range zijn en maakt hier een binaire afbeelding van
mask = cv2.inRange(hsv, dark_black, light_black)
result = cv2.bitwise_and(frame, frame, mask=mask)
# vind de contouren
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) !=0:
for contour in contours:
if cv2.contourArea(contour) > 500:
(x, y), radius = cv2.minEnclosingCircle(contour)
center = (int(x), int(y))
radius = int(radius)
cv2.circle(frame, center, radius, (0,255,0), 4)
# sla de video op
out.write(frame)
# laat de video zien in een popup als watermaze result
cv2.imshow('watermaze result', frame)
# als je op q drukt sluit de loop vroegtijdig af
if cv2.waitKey(1) == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()